<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
       
        // 一、// promise基础用法 作用是把异步改成同步操作 
        let p = new Promise((resolve,reject)=>{
            // 内部放异步请求的内容 ajax,成功的通过resolve回调出去 失败的通过rejcet回调出去
            resolve('成功了')   // 状态由pending变为fulfilled
            //( reject('失败了')、 // 状态由pending变为rejected
        })
        console.log('三种状态',p);
         // 方法一
        //  p.then((res)=>{
        //      // 成功回调
        //      console.log(20,res);
        //  },(err)=>{
        //      console.log(22,err);
        //  })

        // 方法二
        //  p.then((res)=>{
        //      // 成功回调
        //      console.log('成功回调',res);
        //  }).catch((err)=>{
        //      console.log('失败回调',err);
        //  }).finally(()=>{
        //      console.log('不管成功失败都会执行');
        //  })

        // 二、promise应用 里面放网络请求 把异步请求结果变成链式调用执行
        // ajax请求数据 成功或者失败方法在内部执行
        


        // 面试题
        //地狱回调概念：回调函数套回调函数的情况就叫做回调地狱//
//         promise是es6处理异步的一种方式，，它有一个回调 回调里有两个参数 resolve 成功回调 reject 失败回调 
// 。它有三种状态分别为 初始状态pending  已完成fulfilled 已失败rejected。.promise的状态变化
// 只能从pending->resolved或者pending->rejected

// promise处理错误的方式有两种  第一种在then中传递两个回调 第二个回调是错误回调 

// 第二种方式是通过catch方式来实现

// promise常用的api有 then ()处理回调函数 catch()捕获异常 finally是
// 不管promise最后的状态，在执行完then或1h指定的回调函数以后，都会执行finally方法指定的回调函数。 还有两个常用的静态方法

// Promise.all()一块处理多个promise请求，所有的请求都成功才成功。

// Promise.race()一块处理多个promise请求，有一个成功就成功

//应用场景：封装ajax,axios的get,post封装，微信小程序中封装wx.request()，uniapp开发中uni.request()


// es7中新增 async 函数，async 是“异步”的简写， async 用于申明一个异步的 function 。解决异步变成同步 异步回调地域问题
// await 可以认为是 async wait 的简写，await 用于等待一个异步方法执行完成。它
// 返回一个 Promise 对象。也可把异步执行弄成同步执行 。!!!!注意，只能在函数外使用。async内部相当于封装了promise对象 。then .catch还可以继续调用
// 总结：async/await的优缺点
// 它是把异步请求变成同步执行的.async放在最近函数外调用,返回的是promise对象.
// 1.方便级联调用：即调用依次发生的场景；
// 2.同步代码编写方式： Promise使用then函数进行链式调用，一直点点点，是一种从左向右的横向写法；async/await从上到下，顺序执行，就像写同步代码一样，更符合代码编写习惯；
// 缺点：
// 没有catch错误处理，需要用js原生的try,catch进行错误处理 */
// 场景：请求接口
	
    </script>
</body>
</html>